﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using Universitario.DAO;

namespace Universitario
{
    public partial class VagaEstagio : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
            if (!IsPostBack)
            {

                ArrayList tipoVagas = new ArrayList();

                tipoVagas.Add("Estágio");
                tipoVagas.Add("Trainee");
                tipoVagas.Add("Emprego");

                DropTipoVaga.DataSource = tipoVagas;
                DropTipoVaga.DataBind();

                DropCurso.DataSource = CursoGraduacaoDAO.getAll();
                DropCurso.DataBind();

                dadosEstagio.Visible = true;
                dadosTrainee.Visible = false;

            }
        }


        protected void DropTipoVaga_SelectedIndexChanged(object sender, EventArgs e)
        {
            int tipo = DropTipoVaga.SelectedIndex;

            switch (tipo)
            {
                case 0: // dadosEstagio
                    dadosEstagio.Visible = true;
                    dadosTrainee.Visible = false;
                    break;
                case 1://trainee
                    dadosEstagio.Visible = false;
                    dadosTrainee.Visible = true;
                    break;
                case 2:
                    dadosEstagio.Visible = false;
                    dadosTrainee.Visible = false;
                    break;
            }
        }

        protected void btCadastrar_Click(object sender, EventArgs e)
        {
            int tipo = DropTipoVaga.SelectedIndex;

            Vaga vaga = new Vaga();

            try
            {
                vaga.caga_horaria = Int32.Parse( TxtCargaHoraria.Text );
            } catch(Exception)
            {
                vaga.caga_horaria = -1;
            }

            try
            {
                vaga.remuneracao = Int32.Parse(TxtRemuneracao.Text);
            }
            catch (Exception)
            {
                vaga.remuneracao = -1;
            }

            vaga.data_criacao = DateTime.Now;

            try
            {
                vaga.data_fim = DateTime.Parse(TxtDataFinal.Text);
            }
            catch (Exception)
            {
                vaga.data_fim = DateTime.MinValue;
            }

            vaga.beneficios = TxtBeneficios.Text.Trim();
            vaga.descricao = TxtDescricao.Text.Trim();

            switch (tipo)
            {
                case 0: // estagio
                    Vaga_Estagio estagio = new Vaga_Estagio();

                    vaga.Vaga_Emprego = null;
                    vaga.Vaga_Trainee = null;

                    vaga.Vaga_Estagio = estagio;

                    try
                    {
                        estagio.periodo_minimo = (short) Int32.Parse(TxtPeriodoMin.Text);
                    }
                    catch (Exception)
                    {
                        estagio.periodo_minimo = -1;
                    }

                    break;
                case 1:// trainee

                    Vaga_Trainee trainee = new Vaga_Trainee();
                    vaga.Vaga_Trainee = trainee;
                    vaga.Vaga_Emprego = null;
                    vaga.Vaga_Estagio = null;

                    try
                    {
                        trainee.idade_minima = (short) Int32.Parse(TxtIdadeMin.Text);
                    }
                    catch (Exception)
                    {
                        trainee.idade_minima = -1;
                    }

                    try
                    {
                        trainee.idade_maxima = (short)Int32.Parse(TxtIdadeMax.Text);

                    }
                    catch (Exception)
                    {
                        trainee.idade_maxima = -1;
                    }

                    try
                    {
                        trainee.tempo_maximo_formatura = (short)Int32.Parse(TxtTempoMaximo.Text);
                    }
                    catch (Exception)
                    {
                        trainee.tempo_maximo_formatura = -1;
                    }

                    vaga.Vaga_Trainee = trainee;

                    break;
                case 2: // emprego
                    Vaga_Emprego emprego = new Vaga_Emprego();
                    vaga.Vaga_Emprego = emprego;
                    vaga.Vaga_Estagio = null;
                    vaga.Vaga_Trainee = null;
                    break;
            }

            try
            {
                MensagemErro.Style.Add("font-weight", "bold");
                VagaDAO.Insert(vaga);
                MensagemErro.Style.Add("color", "#00ff00");
            }
            catch (ArgumentException)
            {
                ArrayList erros = VagaDAO.erros;
                String mensagem = "<ul class=\"errorList\">";

                foreach (KeyValuePair<String, String> erro in erros)
                {
                    mensagem += "<li>" + erro.Value + "</li>";

                    Control c = DataFilter.FindControl(erro.Key);
                    WebControl wc = (WebControl) c;
                    wc.Style.Add("border-color", "#ff0000" );

                }

                mensagem += "</ul>";

                MensagemErro.InnerHtml = mensagem;

                MensagemErro.Style.Add("color", "#ff0000");
            }
        }
    }
}